import uuid
from .utils.sub_module import find_sub_module


# 维护微服务配置
PYTHON_SERVICE_CONFIG = {
    "app_name": "app-%s" % str(uuid.uuid4()),           # 应用名，默认随机生成
    "eureka_server": "http://localhost:8761/eureka/",   # Eureka服务器地址
    "instance_port": 27326,                             # 提供微服务的应用实例端口
    "instance_host": "localhost",                       # 提供微服务的应用实例主机
    "metadata": {
        "app_version": "undefined",                     # 应用版本，供灰度等使用
        "update_paths": ["."],                          # 要自动更新的路径，默认全部更新
        "server_platform": "python"
    }
}


def load_config(config: dict = None):
    """加载配置

    Args:
        config (dict, optional): 自定义的配置字典，默认为空. 
        从项目的根目录或子目录查找settings的包，再引入其中的"python_service_config"变量
    """
    if config is None:
        config_module = find_sub_module("settings")
        if config_module is not None:
            config = getattr(config_module, "PYTHON_SERVICE_CONFIG", {})
        else:
            config = {}
    PYTHON_SERVICE_CONFIG.update(config)
